home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1146 / 1146.xpi / chrome / screengrab.jar / content / external / simpledate.js < prev    next >
Text File  |  2009-03-09  |  10KB  |  346 lines

  1.  /****************************************************************************
  2. * Object: SimpleDate
  3. * Description: Date Object which allow string format in many formats
  4. * Author: Uzi Refaeli
  5. * From: http://www.comet.co.il/en/articles/date/article.html
  6. *****************************************************************************/
  7.  
  8.  
  9. //======================================== Properties============================================
  10. /**
  11.  * private - access by the methods
  12.  */
  13. SimpleDate.prototype.dateValue = null; // private
  14. SimpleDate.prototype.monthArray = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");//private
  15. SimpleDate.prototype.dayArray = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");//private
  16. //======================================== Costructor ===========================================
  17.  
  18. /**
  19.  * Construct new SimpleDate object and initiate it.
  20.  * If date param is null the current date is set.
  21.  * If date param is a Date object the we just assign it.
  22.  * Than a long value is tested in decimal radix (be aware to parseInt limitation).
  23.  * param: data - date value (see above).
  24.  */
  25. function SimpleDate(date){
  26.     if (date == null){
  27.         this.dateValue = new Date();
  28.     }else if (date instanceof Date){
  29.         this.dateValue = date;
  30.     }else  if (date instanceof Number){
  31.         this.dateValue = new Date(date);
  32.     }else {
  33.         var longValue = parseInt(date, 10);
  34.         this.dateValue = new Date(longValue);
  35.     }
  36. }
  37.  
  38. //======================================== Public Methods ======================================
  39. /**
  40.  * Construct new object with the same value as this.
  41.  * return: SimpleDate.
  42.  */
  43. SimpleDate.prototype.clone = function (){
  44.     return new SimpleDate(this.getLongValue());
  45. }
  46.  
  47. /**
  48.  * Returns cuurnet date in long format - UTC time
  49.  * param: bool - Boolean, to leave the seconds or not.
  50.  */
  51. SimpleDate.prototype.getLongValue = function (leaveSecondes){
  52.     var tDate = new Date(this.valueOf());
  53.  
  54.     //do we need to lose the seconds and milli...
  55.     if (!leaveSecondes)
  56.         tDate.setUTCSeconds(0, 0);
  57.  
  58.     return tDate.valueOf();
  59. }
  60.  
  61. /**
  62.  * set new long date
  63.  * param: longValue - New long value
  64.  */
  65. SimpleDate.prototype.setLongValue = function (longValue){
  66.     this.dateValue = new Date(longValue);
  67. }
  68.  
  69. //-------------
  70. /**
  71.  * Return the date object value
  72.  */
  73. SimpleDate.prototype.valueOf = function (date){
  74.     return this.dateValue.valueOf();
  75. }
  76.  
  77. //-------------
  78. /**
  79.  * set new date
  80.  * param: date - Date object or long value
  81.  */
  82. SimpleDate.prototype.setDate = function (date){
  83.     if (date instanceof Date)
  84.         this.dateValue = date;
  85.     else
  86.         this.dateValue = new Date(date);
  87. }
  88.  
  89. //-------------
  90. /**
  91.  * Change the hour field
  92.  * param: hour - Numeric hour
  93.  */
  94. SimpleDate.prototype.setHours = function (hour){
  95.     this.dateValue.setUTCHours(hour);
  96. }
  97.  
  98. /**
  99.  * return: the hour field
  100.  */
  101. SimpleDate.prototype.getHours = function (){
  102.     return this.dateValue.getUTCHours();
  103. }
  104.  
  105. /**
  106.  * Change the minutes field
  107.  * param: minutes - Numeric minutes
  108.  */
  109. SimpleDate.prototype.setMinutes = function (minutes){
  110.     this.dateValue.setUTCMinutes(minutes);
  111. }
  112.  
  113. /**
  114.  * return: the minute field
  115.  */
  116. SimpleDate.prototype.getMinutes = function (){
  117.     return this.dateValue.getUTCMinutes();
  118. }
  119.  
  120.  
  121. /**
  122.  * Change the minutes field
  123.  * param: seconds - Numeric seconds
  124.  * param: milliseconds - Optional, Numeric milliseconds
  125.  */
  126. SimpleDate.prototype.setSeconds = function (seconds, milliseconds){
  127.     if (milliseconds)
  128.         this.dateValue.setUTCSeconds(seconds, milliseconds);
  129.     else
  130.         this.dateValue.setUTCSeconds(seconds, 0);
  131. }
  132.  
  133. /**
  134.  * return: the second field
  135.  */
  136. SimpleDate.prototype.getSeconds = function (){
  137.     return this.dateValue.getUTCSeconds();
  138. }
  139.  
  140. /**
  141.  * Sets the numeric date in the Date object using Universal Coordinated Time (UTC).
  142.  * param: Required. A numeric value equal to the numeric date.
  143.  * return: Nothing
  144.  */
  145. SimpleDate.prototype.setDayInMonth = function (numDate){
  146.     this.dateValue.setUTCDate(numDate);
  147. }
  148.  
  149. /**
  150.  * return: Day of year (0-6)
  151.  */
  152. SimpleDate.prototype.getDayOfWeek = function (){
  153.     return this.dateValue.getUTCDay();
  154. }
  155.  
  156. /**
  157.  * return: Day in month (1-31)
  158.  */
  159. SimpleDate.prototype.getDayInMonth = function (){
  160.     return this.dateValue.getUTCDate();
  161. }
  162.  
  163. /**
  164.  * Sets the year value in the Date object using Universal Coordinated Time (UTC).
  165.  * param: Required. A numeric value equal to the year.
  166.  * return: Nothing
  167.  */
  168. SimpleDate.prototype.setYear = function (numYear){
  169.     this.dateValue.setUTCFullYear(numYear);
  170. }
  171.  
  172. /**
  173.  * return: Year
  174.  */
  175. SimpleDate.prototype.getYear = function (){
  176.     return this.dateValue.getUTCFullYear();
  177. }
  178.  
  179. /**
  180.  * Sets the month value in the Date object using Universal Coordinated Time (UTC).
  181.  * param: Required. A numeric value equal to the month.
  182.  * return: Nothing
  183.  */
  184. SimpleDate.prototype.setMonth = function (month){
  185.     this.dateValue.setUTCMonth(month);
  186. }
  187.  
  188. /**
  189.  * return: Month
  190.  */
  191. SimpleDate.prototype.getMonth = function (){
  192.     return this.dateValue.getUTCMonth();
  193. }
  194.  
  195. //-------------
  196. /**
  197.  * Return the date long value as String
  198.  */
  199. SimpleDate.prototype.toString = function (){
  200.     return this.getLongValue()+"";
  201. }
  202.  
  203. //-------------
  204. /**
  205.  * Returns date in a formated string.
  206.  * param: stringFormat - The requested format.
  207.  *         The stringFormat parameter is being read char after char.
  208.  *        Each one of the speical chars (see below) is replaced by it's equivalent value.
  209.  *        Any other chars are copied to the new string without a change.
  210.  *
  211.  *        toFormatedString special chars and their meaning:
  212.  *        -------------------------------------------------
  213.  *
  214.  *        |-------|-------------------------------|---------------|
  215.  *        | Char  |          Description          |   Example     |
  216.  *        |-------|-------------------------------|---------------|
  217.  *        |   ~y  | Year - two digits             | 04            |
  218.  *        |-------|-------------------------------|---------------|
  219.  *        |   ~Y  | Year - four digits            | 2004          |
  220.  *        |-------|-------------------------------|---------------|
  221.  *        |   ~d  | Day in month                  | 01 - 31       |
  222.  *        |-------|-------------------------------|---------------|
  223.  *        |   ~D  | Day in month (Full string)    | Sunday        |
  224.  *        |-------|-------------------------------|---------------|
  225.  *        |   ~w  | Day in week                   | 0 - 6         |
  226.  *        |-------|-------------------------------|---------------|
  227.  *        |   ~W  | Day in week                   | 1 - 7         |
  228.  *        |-------|-------------------------------|---------------|
  229.  *        |   ~k  | Month in year                 | 1 - 12        |
  230.  *        |-------|-------------------------------|---------------|
  231.  *        |   ~M  | Month in year (Full string)   | April         |
  232.  *        |-------|-------------------------------|---------------|
  233.  *        |   ~a  | AM/PM marker                    | AM, PM        |
  234.  *        |-------|-------------------------------|---------------|
  235.  *        |   ~h  | Hour (12 hours)               | 02            |
  236.  *        |-------|-------------------------------|---------------|
  237.  *        |   ~H  | Hour (24 hours)               | 14            |
  238.  *        |-------|-------------------------------|---------------|
  239.  *        |   ~m  | Minutes                           | 69 :-)        |
  240.  *        |-------|-------------------------------|---------------|
  241.  *        |   ~s  | Seconds                           | 69 :-)        |
  242.  *        |-------|-------------------------------|---------------|
  243.  *        |   ~S  | Milliseconds                       | 451           |
  244.  *        |-------|-------------------------------|---------------|
  245.  *        |   ~L  | Long value                       | 1076502654847 |
  246.  *        |-------|-------------------------------|---------------|
  247.  *        * Please note that In future more letters may be used so
  248.  *          consider all a-z && A-Z as reserved letters.
  249.  */
  250.  
  251.  SimpleDate.prototype.toFormattedString = function (stringFormat){
  252.     if (this.dateValue == null)
  253.         return "";
  254.     var buffer = new Array();
  255.     try{
  256.         for (var i = 0; i < stringFormat.length; i++){
  257.             var chr1 = stringFormat.charAt(i);
  258.             if(chr1 == "~"){
  259.                 buffer[buffer.length] = this.getNextToken(stringFormat.charAt(++i), this.dateValue);
  260.             }else{
  261.                 buffer[buffer.length] = chr1;
  262.             }
  263.         }
  264.     }catch(e){
  265.         return null;
  266.     }
  267.  
  268.     return buffer.join("");
  269. }
  270.  
  271. //======================================== Private Methods ======================================
  272. SimpleDate.prototype.getNextToken = function (chr, date){
  273.     var ret = chr;
  274.     switch (chr){
  275.         case "y":
  276.             //year tow digits (04)
  277.             ret = new String(date.getUTCFullYear()).substr(2);
  278.             break;
  279.         case "Y":
  280.             //year four digits (2004)
  281.             ret = date.getUTCFullYear();
  282.             break;
  283.         case "d":
  284.             //day in month (1 - 31)
  285.             ret = date.getUTCDate();
  286.             ret = ret < 10 ? "0" + ret : ret;
  287.             break;
  288.         case "D":
  289.             //day in week (Full String)
  290.             ret = this.dayArray[date.getUTCDay()];
  291.             break;
  292.         case "w":
  293.             //day of week (0-6)
  294.             ret = date.getUTCDay();
  295.             break;
  296.         case "W":
  297.             //day of week (1-7)
  298.             ret = date.getUTCDay() + 1;
  299.             break;
  300.         case "k":
  301.             //month of year (1-12)
  302.             ret = date.getUTCMonth() + 1;
  303.             ret = ret < 10 ? "0" + ret : ret;
  304.             break;
  305.         case "M":
  306.             //month of year (full string)
  307.             ret = this.monthArray[date.getUTCMonth()];
  308.             break;
  309.         case "a":
  310.             //am/pm marker
  311.             ret = date.getUTCHours() < 12 ? "AM" : "PM";
  312.             break;
  313.         case "h":
  314.             //hour (12 hours)
  315.             ret = date.getUTCHours();
  316.             ret = ret > 12 ? ret - 12 : ret;
  317.             ret = ret < 10 ? "0" + ret : ret;
  318.             break;
  319.         case "H":
  320.             //hour (24 hours)
  321.             ret = date.getUTCHours();
  322.             ret = ret < 10 ? "0" + ret : ret;
  323.             break;
  324.         case "m":
  325.             //minutes
  326.             ret = date.getUTCMinutes();
  327.             ret = ret < 10 ? "0" + ret : ret;
  328.             break;
  329.         case "s":
  330.             //secondes
  331.             ret = date.getUTCSeconds();
  332.             ret = ret < 10 ? "0" + ret : ret;
  333.             break;
  334.         case "S":
  335.             //milisecondes
  336.             ret = date.getUTCMilliseconds();
  337.             break;
  338.         case "L":
  339.             //long value
  340.             ret = date.valueOf();
  341.             break;
  342.     }
  343.     return ret;
  344. }
  345.  
  346.